package com.csap.framework.oauth2;

import com.csap.framework.oauth2.cache.StrategyType;
import com.csap.framework.oauth2.context.CacheApplicationContext;
import com.csap.framework.oauth2.model.ResultResponse;

/**
 * @Author ycf
 * @Date 2022/3/10 4:58 PM
 * @Version 1.0
 */
public interface CacheGet {
    /**
     * 获取最终数据
     *
     * @param eleId 车辆id
     * @param keys  键
     * @return 数据
     */
    default ResultResponse get(Long eleId, StrategyType... keys) {
        ResultResponse response = new ResultResponse();
        for (StrategyType key : keys) {
            key.accept(response, CacheApplicationContext.execute(key).executeQuery(eleId));
        }
        return response;
    }

    /**
     * 根据车辆编号获取信息
     *
     * @param eleNum 车辆编号
     * @param keys   键
     * @return 信息
     */
    ResultResponse getEleNum(String eleNum, StrategyType... keys);

    /**
     * 根据id获取信息
     *
     * @param id   车辆id
     * @param keys 键
     * @return 信息
     */
    ResultResponse getId(Long id, StrategyType... keys);

    /**
     * 获取 信息（imel）
     *
     * @param eleImel imel
     * @param keys    键
     * @return 信息
     */
    ResultResponse getEleImei(String eleImel, StrategyType... keys);


}
